import Page
from Page import App
from Base.Base import Base
from selenium.webdriver.common.by import By


class AppManagerPage(Base):
    """
    车应用管理页
    """

    def __init__(self, driver):
        Base.__init__(self, driver)

        # `已安装`标题
        self.manager_installed_title_text = (By.XPATH, Page.TEXT.format("已安装"))

        # 下载列表按钮
        self.manager_download_list_btn = (By.XPATH, App.RESOURCE_ID.format("download_list"))

        # 全部更新按钮
        self.manager_all_update_btn = (By.XPATH, Page.TEXT.format("全部更新"))

        # 应用管理角标(待更新数)
        self.manager_update_count_text = (By.XPATH, App.RESOURCE_ID.format("tv_wait_update_count"))

        # 应用列表封面
        self.index_list_app_cover_img = (By.XPATH, App.index_list_app_cover_img.format(""))

        # 应用列表描述
        self.index_list_app_desc_text = (By.XPATH, App.index_list_app_desc_text.format(""))

        # 应用列表按钮
        self.index_list_app_btn_btn = (By.XPATH, App.index_list_app_btn_btn.format(""))

    def get_list_app_cover(self, app_name):
        """
        获取指定应用的封面

        :param app_name: 应用中文名
        :return:
        """
        self.index_list_app_cover_img = (By.XPATH, App.index_list_app_cover_img.format(app_name))
        return self.find_element_o(self.index_list_app_cover_img)

    def get_list_app_desc(self, app_name):
        """
        获取指定索引的应用描述

        :param app_name: 应用中文名
        :return:
        """
        self.index_list_app_desc_text = (By.XPATH, App.index_list_app_desc_text.format(app_name))
        return self.find_element_o(self.index_list_app_desc_text)

    def get_list_app_btn(self, app_name):
        """
        获取指定索引的应用标题

        :param app_name: 应用中文名
        :return:
        """
        self.index_list_app_btn_btn = (By.XPATH, App.index_list_app_btn_btn.format(app_name))
        return self.find_element_o(self.index_list_app_btn_btn)

    def get_update_count(self):
        """
        获取待更新数

        :return:
        """
        return self.find_element_o(self.manager_update_count_text)

    def click_list_app_btn(self, app_name):
        """
        点击指定索引的应用标题

        :param app_name: 应用中文名
        :return:
        """
        self.index_list_app_btn_btn = (By.XPATH, App.index_list_app_btn_btn.format(app_name))
        self.click_element(self.index_list_app_btn_btn)

    def click_download_list(self):
        """
        点击下载列表按钮

        :return:
        """
        self.click_element(self.manager_download_list_btn)
